#if !defined(SM__TOUCHABLEOBJECT_H)
#define SM__TOUCHABLEOBJECT_H

class Sprite;

// for enum
#include "swagme.h"

// interface class for now cuz Rob is squeamish :P
class TouchableObject {
protected:
  // this is the bounding box of the swag in the game world 
  // (not necessarily the bounding box of the sprite on the screen)
  SDL_Rect box;
public:
  virtual int Draw(SDL_Surface *dst, int animSpeed, bool bShadow) = 0;
  virtual int getY() const = 0;
  virtual int getSpeed() const = 0;
  virtual sm_cd_object getObjectType() const = 0;

  const SDL_Rect& getBox() const { return box; }
  int getLeft() const { return box.x; }
  int getTop() const { return box.y; }
  int getWidth() const { return box.w; }
  int getHeight() const { return box.h; }
  int getRight() const { return (box.x + box.w - 1); }
  int getBottom() const { return (box.y + box.h - 1); }

  TouchableObject();
  TouchableObject(int left, int top, int width, int height);
  virtual ~TouchableObject() {}
};

class DummyWall : public TouchableObject {
    // interface function at TouchableObject
    int Draw(SDL_Surface *dst, int animSpeed, bool bShadow) { return 0; }
    int getY() const { return 0; }
    int getSpeed() const { return 0; }
    sm_cd_object getObjectType() const { return sm_cdo_wall; }
};

#endif // SM__TOUCHABLEOBJECT_H
